/**
 * ################
 * #######湖泊######
 * ################
 */
import RiverHistoryData from './../../../page/common/ChartHistoryData'
// import RealTimeInstrument from './../../../page/lakes/RealTimeInstrument'
import DataList from './../../../page/common/DataList'
import DateDataLineChart from './../../../page/common/DateDataLineChart'
import PictureView from './../../../page/common/PictureView'
import { pointFeatureStyle, initCenter } from './../../common'
import point from '../../../map/vuex/point'
import glint from '../../../map/vuex/glint'
import Vue from 'vue'
const lakes = {
  // 该配置描述描点ID
  id: 'lakes',
  // 名称
  name: '湖泊',
  // 应该使用的图标
  icon: '/static/icon/hupo-01.png',
  // 应该使用的图标（矢量）
  'icon-svg': '/static/svg/hupo-01.svg',
  // 应该使用的图标-激活
  iconH: '/static/icon/hupo-H-01.png',
  // 是否显示（初始化时是否隐藏）
  isShow: false,
  // 主键
  primaryKey: 'STCD',
  /**
   * 事件回调函数
   * @param eventName 触发事件名称
   * @param param 传递参数
   */
  triggeCallback: function (eventName, isShow, features) {
    // 当事件为图层可见状态发生变化时
    if (eventName === 'layer-visible-change') {
      const array2 = [
        '0261610150',
        '0261610151',
        '0261610152',
        '0261610153',
        '0261610200',
        '0261610201',
        '0261610130',
        '0261610140',
        '0261610143',
        '0261610141',
        '0261610180',
        '0261610181',
        '0261611010',
        '0261611180',
        '0261610100',
        '0261610120',
        '0261610080',
        '0261611670',
        '0261611672',
        '0261610190',
        '0261610210',
        '0261610211',
        '0261610165',
        '0261610164',
        '0261610163',
        '0261610161',
        '0261610160',
        '0261610177',
        '0261610176',
        '0261610175',
        '0261610173',
        '0261610172',
        '0261610171',
        '0261610110',
        '0261610111',
        '0261611470',
        '0261611110',
        '0261611460'
      ]
      const { $vuexStore: vuex } = Vue.prototype
      if (isShow) {
        vuex.dispatch('setView', initCenter)
      }
      if (!isShow) {
        features = null
        glint.state.points = []
      }
      if (features != null) {
        for (let i in features) {
          for (let n in array2) {
            if (array2[n] === features[i].get('stcd')) {
              let OFLE = features[i].get('ofle')
              let ZGCTLE = features[i].get('zgctle')
              let DDCTLE = features[i].get('ddctle')
              let LE = features[i].get('le')

              if (LE > OFLE && OFLE != null) {
                glint.state.points.push(features[i])
                continue
              } else if (LE > ZGCTLE && ZGCTLE != null) {
                glint.state.points.push(features[i])
                continue
              } else if (LE > DDCTLE && DDCTLE != null) {
                glint.state.points.push(features[i])
                continue
              }
            }
          }
        }
      }
      point.points(isShow, glint.state.points)
    }
  },
  // 做为要素在地图上显示的样式
  featureStyle: function (feature, resolution) {
    let les = ''
    if (feature.get('le') === '0') {
      les = '0米'
    } else if (typeof feature.get('le') !== 'undefined') {
      les = feature.get('le') + '米'
    }
    return pointFeatureStyle(
      '/static/icon/hupo-01.png',
      feature.get('stnm') + '   ' + les,
      feature,
      resolution
    )
  },
  // 做为要素在地图上被激活的样式
  featureStyle_H: function (feature, resolution) {
    let les = ''
    if (feature.get('le') === '0') {
      les = '0米'
    } else if (typeof feature.get('le') !== 'undefined') {
      les = feature.get('le') + '米'
    }
    return pointFeatureStyle(
      '/static/icon/hupo-H-01.png',
      feature.get('stnm') + '   ' + les,
      feature,
      resolution
    )
  },
  // 地图描点数据来源
  src: `/ssjc/Lake/LakeLive?name=''&isGeo_=true&typeKey_=lake&longitudeKey_=lng&latitudeKey_=lat`,
  // 列表数据来源
  tableSrc: `/ssjc/Lake/LakeLivePage`,
  tableQuerySrc: '/ssjc/Lake/LakeLiveQuery',
  // 详情标签页
  detailTabs: {
    /**
     * 站点信息
     */
    // baseInfo: {
    //   // 名称
    //   name: '监测概览',
    //   // 组件
    //   component: RealTimeInstrument,
    //   // 该组件需要的数据接口
    //   src: {
    //     // 根据主键获取单条数据
    //     detail: '/ssjc/Lake/LakeLiveDataByStcd'
    //   },
    //   // 附加数据
    //   addition: {
    //     // 展示数据的键
    //     showKey: 'LE'
    //   }
    // },
    /** 实时数据 */
    dataList: {
      // 名称
      name: '当天数据',
      // 组件
      component: DataList,
      // 该组件需要的数据接口--按照时间范围查询历史数据
      src: {
        url: '/ssjc/Lake/LakeHistoryHourPage',
        param: ({ row, date }) => {
          let now = typeof date === 'string' ? new Date(date) : new Date()
          let dateStr =
              now.getFullYear() + '-' + (now.getMonth() + 1) + '-' + now.getDate()
          let stcd = ''
          if (row['STCD']) {
            stcd = row['STCD']
          } else {
            stcd = row['stcd']
          }
          return {
            STCD: stcd,
            BEGINDATE: dateStr + ' 00:00:00',
            // 结束日期1天前
            ENDDATE: dateStr + ' 23:59:59'
          }
        }
      },
      // 附加数据
      addition: {
        // 展示数据的键
        tableFormat: [
          // 站名
          {
            // 显示标题
            label: '站名',
            // 属性键
            prop: 'STNM',
            // 是否需要搜索
            isSearch: true,
            // 格式化函数
            formatter: function (row, column, cellValue, index) {
              return cellValue
            }
          },
          // 时间
          {
            label: '监测时间',
            prop: 'YMDHM',
            // width: 200,
            isSearch: true,
            formatter: function (row, column, cellValue, index) {
              if (cellValue) {
                // 'q+': Math.floor((date.getMonth() + 3) / 3), //季度yyyy-MM-dd hh:mm:ss
                return new Date(cellValue).format('yyyy-MM-dd hh:mm:ss')
              }
              return ''
            }
          },
          // 瞬时流速
          {
            label: '实时水位',
            prop: 'LE',
            // width: 200,
            isSearch: true,
            formatter: function (row, column, cellValue, index) {
              return cellValue
            }
          }
        ]
      }
    },
    // /**
    //  * 监测图片
    //  */
    picture: {
      // 名称
      name: '监测图片',
      // 组件
      component: PictureView,
      // 该组件需要的数据接口
      src: {
        // 图片服务：http://172.16.238.24:8080/dataservice/api/service/Picture/PictureHistoryDate
        url: '/ssjc/Picture/PictureHistoryDate',
        param: ({ row, date, Stcd }) => {
          let dateStr = ''
          if (date !== '' && date !== undefined) {
            dateStr = date
          } else {
            let now = new Date()
            dateStr =
              now.getFullYear() +
              '-' +
              (now.getMonth() + 1) +
              '-' +
              now.getDate()
          }
          let stcd = ''
          if (row['STCD']) {
            stcd = row['STCD']
          } else {
            stcd = row['stcd']
          }
          return {
            STCD: stcd,
            BEGINDATE: dateStr + ' 00:00:00',
            // 结束日期1天前
            ENDDATE: dateStr + ' 23:59:59'
          }
        }
      },
      // 附加数据
      addition: {
        // 展示数据的键
        primaryKey: 'STCD'
      }
    },
    dataLineChart: {
      // 名称
      name: '实时图表',
      // 组件
      component: DateDataLineChart,
      // 该组件需要的数据接口--按照时间范围查询历史数据
      src: {
        url: '/ssjc/Lake/LakeHistory',
        param: ({ row, date }) => {
          let now = typeof date === 'string' ? new Date(date) : new Date()
          let dateStr =
            now.getFullYear() + '-' + (now.getMonth() + 1) + '-' + now.getDate()
          let stcd = ''
          if (row['STCD']) {
            stcd = row['STCD']
          } else {
            stcd = row['stcd']
          }
          return {
            STCD: stcd,
            BEGINDATE: dateStr + ' 00:00:00',
            // 结束日期1天前
            ENDDATE: dateStr + ' 23:59:59'
          }
        }
      },
      // 附加数据
      addition: {
        // 主键
        primaryKey: 'STCD',
        // 展示数据的键
        showKey: 'LE',
        // 时间的键
        dateKey: 'YMDHM',
        // 展示数据的键
        chartShowKey: 'LE',
        // 时间的键
        chartDateKey: 'YMDHM'
      }
    },

    /**
     * 历史信息
     */
    history: {
      // 名称
      name: '历史数据',
      // 组件
      component: RiverHistoryData,
      // 该组件需要的数据接口
      src: {
        // 按年查询日历史数据（天单位）
        yearQuery: {
          url: '/ssjc/Lake/LakeLiveYearQuery',
          param: ({
            // 当前处理站数据
            row,
            // 选中年
            choseYear,
            // 时间范围
            dateScope
          }) => {
            let stcd = ''
            if (row['STCD']) {
              stcd = row['STCD']
            } else {
              stcd = row['stcd']
            }
            return 'STCD=' + stcd + '&YEAR=' + choseYear
          }
        },
        // 按照日期范围查询日历史数据（天单位）
        dateScope: {
          url: '/ssjc/Lake/LakeLiveDateQuery',
          param: ({
            // 当前处理站数据
            row,
            // 选中年
            choseYear,
            // 时间范围
            dateScope,
            // 查询类型：1为年查询
            type
          }) => {
            let stcd = ''
            if (row['STCD']) {
              stcd = row['STCD']
            } else {
              stcd = row['stcd']
            }
            return (
              'STCD=' +
             stcd +
              '&BEGINDATE=' +
              dateScope[0].format('yyyy-MM-dd hh:mm:ss') +
              '&ENDDATE=' +
              dateScope[1].format('yyyy-MM-dd hh:mm:ss')
            )
          }
        },
        // 按照时间范围查询历史数据
        timeScope: {
          url: '/ssjc/Lake/LakeLive',
          param ({ date, Stcd }) {
            return {
              STCD: Stcd,
              BEGINDATE: date + ' 00:00:00',
              ENDDATE: date + ' 23:59:59'
            }
          }
        }
      },
      // 附加数据
      addition: {
        // 给历史页面做导出时的标题
        stationName: '站名',
        // 给历史页面做导出时的属性名
        charStationName: 'STNM',
        // 给历史页面做导出时的标题
        chartDate: '监测时间',
        // 主键
        primaryKey: 'STCD',
        // 展示数据的键
        showKey: 'LE',
        // 时间的键
        dateKey: 'YMDHM',
        // 展示数据的键
        chartShowKey: 'LE',
        // 时间的键
        chartDateKey: 'YMDHM',
        // 图表标题
        chartTitle: '历史数据',
        // 图表点名称
        chartDataName: '水位（米）',
        // 要在历史tab中显示的组件id
        historyTabs: ['dataLineChart', 'dataList', 'picture']
      }
    }
  },
  // 列表格式
  tableFormat: [
    // 站名
    {
      // 显示标题
      label: '站名',
      // 属性键
      prop: 'STNM',
      // 宽度
      width: 90,
      // 是否需要搜索
      isSearch: true,
      // 格式化函数
      formatter: function (row, column, cellValue, index) {
        return cellValue
      }
    },
    // 时间
    {
      label: '时间',
      prop: 'YMDHM',
      width: 150,
      isSearch: true,
      formatter: function (row, column, cellValue, index) {
        if (cellValue) {
          // 'q+': Math.floor((date.getMonth() + 3) / 3), //季度yyyy-MM-dd hh:mm:ss
          return new Date(cellValue).format('MM-dd hh:mm')
        }
        return ''
      }
    },
    // 实时水位
    {
      label: '实时水位(m)',
      prop: 'LE',
      width: 125,
      isSearch: true,
      formatter: function (row, column, cellValue, index) {
        return cellValue
      }
    },
    {
      label: '水位预警',
      prop: 'WLA',
      width: 150,
      isSearch: true,
      formatter: function (row, column, cellValue, index) {
        const array = [
          '0261610150',
          '0261610151',
          '0261610152',
          '0261610153',
          '0261610200',
          '0261610201',
          '0261610130',
          '0261610140',
          '0261610143',
          '0261610141',
          '0261610180',
          '0261610181',
          '0261611010',
          '0261611180',
          '0261610100',
          '0261610120',
          '0261610080',
          '0261611670',
          '0261611672',
          '0261610190',
          '0261610210',
          '0261610211',
          '0261610165',
          '0261610164',
          '0261610163',
          '0261610161',
          '0261610160',
          '0261610177',
          '0261610176',
          '0261610175',
          '0261610173',
          '0261610172',
          '0261610171',
          '0261610110',
          '0261610111',
          '0261611470',
          '0261611110',
          '0261611460'
        ]
        let i = array.indexOf(row.STCD)
        if (row.LE > row.ZGCTLE && row.ZGCTLE != null && row.ZGCTLE !== 0) {
          if (i === -1) {
            return '--'
          } else {
            return '超最高控制水位'
          }
        }
        if (row.LE > row.DDCTLE && row.DDCTLE != null && row.DDCTLE !== 0) {
          if (i === -1) {
            return '--'
          } else {
            return '超汛前控制水位'
          }
        }
        if (row.LE > row.OFLE && row.OFLE != null && row.OFLE !== 0) {
          if (i === -1) {
            return '--'
          } else {
            return '超汛前控制水位'
          }
        }

        return '--'
      }
    },
    {
      label: '常规水位(m)',
      prop: 'OFLE',
      width: 125,
      isSearch: true,
      formatter: function (row, column, cellValue, index) {
        if (row.OFLE === 0 || row.OFLE === '' || row.OFLE === null) {
          return '--'
        }
        return cellValue
      }
    },
    {
      label: '最高控制水位(m)',
      prop: 'ZGCTLE',
      width: 165,
      isSearch: true,
      formatter: function (row, column, cellValue, index) {
        if (row.ZGCTLE === 0 || row.ZGCTLE === '' || row.ZGCTLE === null) {
          return '--'
        }
        return cellValue
      }
    },
    {
      label: '汛前控制水位(m) ',
      prop: 'DDCTLE',
      width: 165,
      isSearch: true,
      formatter: function (row, column, cellValue, index) {
        if (row.DDCTLE === 0 || row.DDCTLE === '' || row.DDCTLE === null) {
          return '--'
        }
        return cellValue
      }
    }
  ]
}
export default lakes
